<?php

namespace App\Http\Controllers\Admin;

use App\Models\Orm\AwAuditRecord;
use App\Models\Orm\CooperativeCompany;
use App\Models\Orm\Product;
use App\Models\Orm\ProductAudit;
use App\Models\Orm\ProductLabels;
use App\Models\Orm\ProjectProduct;
use App\Models\Orm\Recommend;
use App\Models\Orm\SecondsKill;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;

/**
 * 产品模块控制器
 *
 * Class ProductController
 * @package App\Http\Controllers\Admin
 */
class ProductController extends Controller
{
    /**
     * 产品列表(展示页)
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $user = auth('admin')->user();

        $data = Product::orderby('id', SORT_DESC)->get();
        return view('admin.product.index', compact('data'));

    }

    /**
     * 新建产品审核
     *
     * @return \Illuminate\Http\Response
     */
    public function create(Request $request)
    {
        $user = auth('admin')->user();
        $review = Product::$review_text;

        if ($request->isMethod('post')) {

            $request->flash();

            // 验证数据
            // TODO(先只做了部分必要验证,详细验证后期加)
            $validator = Validator::make($request->all(), [
                'name' => 'required|unique:' . Product::TABLE_NAME . ',name',
                'product_logo' => 'required|image|max:2048',
                'product_introduction' => 'required|string|max:300',
                'ad_image' => 'image|max:2048',
//                'crowd' => 'required|array|min:1',
//                'review' => 'array|min:1',
            ], [], [
                'name' => '产品名称',
                'product_logo' => '产品LOGO',
                'product_introduction' => '产品简介',
                'ad_image' => '产品广告',
                'crowd' => '适用人群',
                'review' => '审核方式',
            ]);

            if ($validator->fails()) {
                return back()->withErrors($validator);
            }

            $insert_data = $request->except(['_token', 'product_logo', 'ad_image']);
            $insert_data['product_introduction'] = trim($insert_data['product_introduction']);
            $product_logo = uploads($request->file('product_logo'), 'product_logo');
            $insert_data['product_logo'] = $product_logo;

//            // 处理产品广告
//            if ($request->hasFile('ad_image')) {
//                // $ad_image = 'http://test.img';
//                $ad_image = uploads($request->file('ad_image'), 'ad_image');
//
//                $insert_data['ad_image'] = $ad_image;
//            }


            // 用户ID
//            $insert_data['admin_users_id'] = $user->id;
            $insert_data['created_at'] = date('Y-m-d H:i:s');
            $insert_data['updated_at'] = date('Y-m-d H:i:s');

            Product::create($insert_data);
            return redirect('/admin/product/index')->with(['success' => '您的申请已提交,请耐心等等待审核']);
        }

        $data = new Product();

        return view('admin.product.create', compact('data','review'));
    }

    /**
     * 产品详情展示页
     *
     * @param  int $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        // 当前用户
        $user = auth('admin')->user();

        // 产品信息
        $data = Product::find($id);

        if (!$data) {
            return back()->withErrors('未找到产品');
        }

        return view('admin.product.show', compact('data'));
    }

    /**
     * 修改产品详情审核
     *
     * @param  int $id
     * @return \Illuminate\Http\Response
     */
    public function edit(Request $request, $id)
    {
        // 当前用户
        $user = auth('admin')->user();

        // 产品信息
        $product = Product::find($id);
        $review = Product::$review_text;

        if (!$product) {
            return back()->withErrors('未找到产品');
        }

        // post请求、提交表单
        if ($request->isMethod('post')) {

            $request->flash();

            // 验证数据
            // TODO(先只做了部分必要验证,详细验证后期加)
            $validator = Validator::make($request->all(), [
                'ad_image' => 'image|max:2048',
            ], [], [
                'ad_image' => '产品广告',
            ]);

            if ($validator->fails()) {
                return back()->withErrors($validator);
            }
            $update_data = $request->except(['_token']);

            //            // 处理产品广告
            if ($request->hasFile('product_logo')) {
                // $ad_image = 'http://test.img';
                $product_logo = uploads($request->file('product_logo'), 'product_logo');

                $update_data['product_logo'] = $product_logo;
            }


//            $update_data['product_details'] = trim($update_data['product_details']);


            // 修改时间
            $update_data['updated_at'] = date('Y-m-d H:i:s');

            // 更改产品表
            $product->update($update_data);

            return redirect('/admin/product/show/' . $product->id)->with(['success' => '修改成功']);
        }

        $data = $product;



        return view('admin.product.edit', compact('data','review'));
    }


    /**
     * 产品上线
     *
     * @param  int $id
     * @return \Illuminate\Http\Response
     */
    public function online($id)
    {


        // 当前用户
        $user = auth('admin')->user();

        // 产品信息
        $product = Product::find($id);


        if (!$product) {
            return back()->withErrors('未找到产品');
        }

        if ($product->status != Product::STATUS_OFF) {
            return back()->withErrors('该产品已经上线');
        }
        $product ->status = 1;

        $product ->save();

        return back()->with(['success' => '您的上线申请已提交,请耐心等待审核结果']);
    }

    /**
     * 产品下线
     *
     * @param  int $id
     * @return \Illuminate\Http\Response
     */
    public function offline($id)
    {
        /**
         * 清除分类主题产品对照表关联数据
         * 清除产品标签表关联数据
         * 清除热门推荐表关联数据
         * 清除秒杀表关联数据
         */
        // 当前用户
        $user = auth('admin')->user();

        // 产品
        $product = Product::find($id);

        if (!$product) {
            return back()->withErrors('未找到相关产品');
        }


        if ($product->status != Product::STATUS_ON) {
            return back()->withErrors('该产品未上线');
        }
        $product ->status = 0;

        $product ->save();
        return back()->with(['success' => '产品下线成功']);
    }


    /**
     * 产品上线
     *
     * @param  int $id
     * @return \Illuminate\Http\Response
     */
    public function onstate($id)
    {


        // 当前用户
        $user = auth('admin')->user();

        // 产品信息
        $product = Product::find($id);


        if (!$product) {
            return back()->withErrors('未找到产品');
        }

        if ($product->state != Product::STATE_OFF) {
            return back()->withErrors('该产品已经上线');
        }
        $product ->state = 1;

        $product ->save();

        return back()->with(['success' => '您的上线申请已提交,请耐心等待审核结果']);
    }

    /**
     * 产品下线
     *
     * @param  int $id
     * @return \Illuminate\Http\Response
     */
    public function offstate($id)
    {
        /**
         * 清除分类主题产品对照表关联数据
         * 清除产品标签表关联数据
         * 清除热门推荐表关联数据
         * 清除秒杀表关联数据
         */
        // 当前用户
        $user = auth('admin')->user();

        // 产品
        $product = Product::where('id','>',1)->update(['state' => 0]);

//        if (!$product) {
//            return back()->withErrors('未找到相关产品');
//        }
//
//
//        if ($product->state != Product::STATE_ON) {
//            return back()->withErrors('该产品未上线');
//        }
//        $product ->state = 0;
//
//        $product ->save();
        return back()->with(['success' => '产品下线成功']);
    }

}
